package pe.tnova.cliente.proyecto.core.dominio;

import java.util.ArrayList;
import java.util.Date;
import java.util.List;

import javax.persistence.CascadeType;
import javax.persistence.Column;
import javax.persistence.Entity;
import javax.persistence.FetchType;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
import javax.persistence.JoinColumn;
import javax.persistence.ManyToOne;
import javax.persistence.OneToMany;
import javax.persistence.OneToOne;
import javax.persistence.SequenceGenerator;
import javax.persistence.Table;
import javax.persistence.Temporal;
import javax.persistence.TemporalType;

import pe.tnova.core.db.Entidad;
@Entity
@Table(name = "Estadio")
public class Estadio implements Entidad {

	
	@Id
	@GeneratedValue(strategy=GenerationType.AUTO, generator="ESTADIO_SEQ")
	@SequenceGenerator(name="ESTADIO_SEQ", sequenceName="ESTADIO_SEQ")	
	@Column(name = "EST_ID")
	private Long id;
	
	@Column(name = "EST_NOMBRE",length=100,unique=true,nullable=false)
	private String nombre;
	
	@ManyToOne(fetch=FetchType.EAGER)
	@JoinColumn(name = "UBI_ID",nullable=false)
	private Ubigeo ubigeo;
//	@Column(name = "UBI_ID")
//	private int ubigeo;
	
	@OneToOne(fetch=FetchType.EAGER)
	@JoinColumn(name = "RESP_ID",nullable=false)
	private Responsable responsable;
//	@Column(name = "RESP_ID")
//	private int responsable;

	@Column(name = "EST_CANTIDAD_ASIENTOS",nullable=false)
	private int cantidadAsientos;

	@Column(name = "EST_DIRECCION",length=200,nullable=false)
	private String direccion;
	
	@Column(name = "EST_REFERENCIA",length=200)
	private String referencia;
	
	@Temporal(TemporalType.TIMESTAMP)
	@Column(name = "EST_FECHA_REGISTRO")
	private Date fechaRegistro;
	
	@Temporal(TemporalType.DATE)
	@Column(name = "EST_FECHA_ACTUALIZADA")
	private Date fechaActualizada;
	
	@Column(name = "EST_ACTIVO")
	private Boolean activo;
	
	@Column(name = "EST_CODIGOUSUARIO",nullable=false)
	private String codigoUsuario;

	@OneToMany(fetch=FetchType.LAZY, mappedBy="estadio", cascade=CascadeType.ALL)
    private List<Asiento> asientos = new ArrayList<Asiento>();
	
	public Long getId() {
		return id;
	}

	public void setId(Long id) {
		this.id = id;
	}

	public String getNombre() {
		return nombre;
	}

	public void setNombre(String nombre) {
		this.nombre = nombre;
	}

	public Ubigeo getUbigeo() {
		return ubigeo;
	}

	public void setUbigeo(Ubigeo ubigeo) {
		this.ubigeo = ubigeo;
	}


	public Responsable getResponsable() {
		return responsable;
	}


	public void setResponsable(Responsable responsable) {
		this.responsable = responsable;
	}


	public int getCantidadAsientos() {
		return cantidadAsientos;
	}


	public void setCantidadAsientos(int cantidadAsientos) {
		this.cantidadAsientos = cantidadAsientos;
	}


	public String getDireccion() {
		return direccion;
	}


	public void setDireccion(String direccion) {
		this.direccion = direccion;
	}


	public String getReferencia() {
		return referencia;
	}


	public void setReferencia(String referencia) {
		this.referencia = referencia;
	}


	public Date getFechaRegistro() {
		return fechaRegistro;
	}


	public void setFechaRegistro(Date fechaRegistro) {
		this.fechaRegistro = fechaRegistro;
	}


	public Date getFechaActualizada() {
		return fechaActualizada;
	}


	public void setFechaActualizada(Date fechaActualizada) {
		this.fechaActualizada = fechaActualizada;
	}


	public Boolean getActivo() {
		return activo;
	}


	public void setActivo(Boolean activo) {
		this.activo = activo;
	}


	public String getCodigoUsuario() {
		return codigoUsuario;
	}


	public void setCodigoUsuario(String codigoUsuario) {
		this.codigoUsuario = codigoUsuario;
	}


	

	public String getCodigoUsuarioActulizar() {
		// TODO Auto-generated method stub
		return null;
	}

	public String getCodigo() {
		// TODO Auto-generated method stub
		return null;
	}

	public String getNombreCompleto() {
		// TODO Auto-generated method stub
		return null;
	}
	

}
